1. Field of the Invention
The present invention relates generally to memory management, and more particularly to improving the performance of microcoded functionality.
2. Related Art
Conventional applications for computer graphics use a microcode engine to prepare the instructions to render various graphics modes. To increase the processing speed, the microcode instructions (i.e., microinstructions) include loop routines that are used to execute the rendering instructions. The loop routines are unrolled to reschedule or tune the microinstructions. A direct correlation can be observed between the complexity of graphics programs and the number of required routines. In short as graphics programs become more advanced and sophisticated, a substantial number of lines of microinstructions are needed to render various graphic modes. However, microcode engines tend to have limited random access memory (RAM) capacity. Once RAM is consumed, more processing time or a faster processor is required to support highly advanced graphics, including animation, gaming and other simulations.
Tuning techniques are often used to improve performance and expand the capabilities of microcode engines. This improves the performance of microcoded transformations, lighting, and other graphics effects. However, most graphics applications have the ability to use several modes to render display frames. Each mode has the potential to contain various combinations of graphics effects, and each mode would require specifically tuned microinstructions to draw the effects. In general, there is not enough microcode memory space to have monolithic tuned rendering microcode for each mode that an application may want to use. Microcode branch instructions can be used to allow a single monolithic rendering code to work in several modes, but at the expense of extreme complexity in applying tuning techniques to maintain reasonable processing requirements for real time environments.
Microinstructions are also dependent upon the platform being used to run the graphics program. The microcode capabilities of each graphics system, including its system and language related run-time libraries, vary and effect the efficiency and performance of the applications loaded onto the graphics system. Software developers for new graphics applications must consider the version, performance, and capabilities of these platforms when they build their applications. Otherwise, new video games, for example, either would not be able to use the microcode developed for the existing platform, or would not take full advantage of the microcode capabilities.
What is needed is a method and system that overcome the above problems to efficiently manage microcode independent of the hardware and operating system.